{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ブロックチェーンと認証システム\n",
    "\n",
    "## 概要\n",
    "\n",
    "仮想通貨を支える技術。仮想通貨が変わるとブロックチェーンや認証システムは基本的に別物となる。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多重支払いの解決策(ブロックチェーン)\n",
    "* ブロックチェーン (Blockchain)\n",
    "    * 公的な取引記録をP2P上に保存し、検証することで多重使用を防ぐ\n",
    "        * 分散して管理される\n",
    "        * 銀行のような特定の管理機関がないため、権限が一箇所に集中することは無い\n",
    "\n",
    "### 種類\n",
    "\n",
    "* パグリック型(パブリックチェーン）\n",
    "    * 特徴\n",
    "        * 中央集権的な管理期間を持たない\n",
    "        * 不特定多数のだれでも自由に参加できる\n",
    "        * だれでもマイニングに参加できる\n",
    "    * ビットコインなど\n",
    "* プライベート型（プライベートチェーン）\n",
    "    * 特徴\n",
    "        * 管理者がいる\n",
    "        * マイニングを行うためには、管理者の許可によってコントロールできる(マイナーの賛同を得なければならない）\n",
    "            * 金融システムの管理などに活用できる\n",
    "    * リップルなど\n",
    "\n",
    "### メリット\n",
    "\n",
    "* 「中央集権化」が防げる\n",
    "    * 一元管理しないことによって、システムが実質的にダウンしない（分散することで他所で復旧できる）\n",
    "* 特定の管理者によって独裁的にコントロールされない\n",
    "    * 多くの利用者の間でブロックチェーンを共有しあうため\n",
    "* 海外送金が安い\n",
    "    * 特定の金融機関を介さないことによって海外への送金コストが大幅に削減できる\n",
    "        * 通常、金融機関を経由することで数百円から数千円の手数料が発生する\n",
    "    *  ユーザー同士の直接的な送金が実現し、最小限の手数料で済むようになる\n",
    "\n",
    "### 用語概要\n",
    "\n",
    "* トランザクション\n",
    "    * 取引のデータ(履歴)のこと\n",
    "        * 誰が誰にいくつのコインを送ったか\n",
    "* ブロック\n",
    "    * 複数のトランザクションをまとめたもの\n",
    "* ブロックチェーン\n",
    "    * ブロックが連なるように保存されたもの"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 改ざんの解決策(承認システム)\n",
    "* プルーフ・オブ・ワーク (Proof of Work, PoW)\n",
    "    * 善意の大勢の仕事によって、正しい記録を決めることで改ざんを防ぐ\n",
    "        * Bitcoinでは、ハッシュ値を解かせること\n",
    "        * その他パズルを解かせるなどの方法もあるらしい\n",
    "    * ビットコインで採用されている\n",
    "        \n",
    "* プルーフ・オブ・ステーク(Proof of Stake, PoS)\n",
    "    * 仮想通貨を保有している量が多いほど、また、その保有時間が長いほど、新しいブロックの生成権を獲得しやすくなる\n",
    "    * 種類\n",
    "        * Proof of WorkにCoin Age(コイン年数)という概念を導入したもの(Coin Age ＋ Proof of Work)\n",
    "            * たくさんコインを持っているほど、その保有期間が長いほどCoin Ageは大きくなる\n",
    "                * Coin Ageが大きいほどマイニングが成功しやすい\n",
    "            * 一度マイニングに成功するとCoin Ageは減る\n",
    "                * 同じ人や団体がマイニングに成功し続けるという事態を緩和できる\n",
    "        * 純粋にコインの保有量だけが関係するもの(Randomized Proof of Stake)\n",
    "            * 取引を承認する人をランダムに選び、選ばれる確率をコインの保有量に比例させておく\n",
    "            * 報酬をもらえる確率がコインの保有量に単純に比例する\n",
    "                * 利息が発生するような状態\n",
    "                * この承認作業はマイニング(採掘)と対比されフォージング(鋳造)と呼ばれる\n",
    "                    * 金持ちが取引を承認しやすく報酬をもらいやすいので、同じ人がフォージングに成功し続けやすい仕組み\n",
    "    * PoWに対するメリット\n",
    "        * 計算量が少なくてすむ\n",
    "        * 改ざんを狙う人がより少ない\n",
    "            * 改ざんするためにコインを買う膨大な資金が必要\n",
    "                * 改ざんして価値が下がると買ったコインの価値が下がるので損\n",
    "    * PoWに対するデメリット\n",
    "        * 流動性が低くなる\n",
    "            * 資金を貯め込む人が増えるので\n",
    "        * 低コスト51%攻撃の可能性\n",
    "            * ある通貨の総量の半分を越える通貨を持っていることを公表して51%攻撃が行えることをみんなに知らせる\n",
    "            * その通貨を売る人が続出し、価値が暴落する\n",
    "            * 通貨の価値が暴落したところで半数を越える通貨を購入してブロックチェーンの改ざんする\n",
    "        * 放置するだけで報酬(Nothing at Stake問題)\n",
    "            * 通貨を保管して放置するだけで報酬がもらえてしまう\n",
    "                * 一番長いブロックチェーンにブロックを繋げていくインセンティブが低い\n",
    "                * 適当に全部の取引を承認していても損害を被らず、ブロックチェーンの収束が起こりにくい\n",
    "    * 多くのアルトコインで採用されている\n",
    "        * イーサリアムもこちらに移行中\n",
    "            \n",
    "* プルーフ・オブ・コンセンサス(Proof of Concensus,PoC)\n",
    "    * 取引を承認する人(Validator)が予め決められていて、そのValidatorのうちの8割が承認すれば取引が承認される仕組み\n",
    "        * Validatorには信頼できる有名な企業(マイクロソフトとかSBI)が選ばれている\n",
    "    * やや中央集権的\n",
    "    * マイニングの作業が不必要になるため取引の承認が数秒で終わる\n",
    "        * 銀行間の送金で使われる傾向がある\n",
    "    * Rippleというコインで採用されている\n",
    "    \n",
    "* デリゲイティド・プルーフ・オブ・ステーク(Delegated Proof of Stake, DPoS)\n",
    "    * PoSを少し変えたもの。次のブロックは誰が生成するかをLISK保有者の投票によって決めるようなシステム。\n",
    "        * LISKというコインで採用されている\n",
    "            \n",
    "* プルーフ・オブ・インポータンス(Proof of Importance,PoI)\n",
    "    * 各ユーザーの重要度というものが計算されて、その重要度に応じて新しいブロックを生成できる確率が高くなる\n",
    "        * 保有している仮想通貨の量だけでなく、「どれだけ取引をしているか」も考慮される\n",
    "            * PoSと比較して流動性が高まる\n",
    "        * NEMというコインで採用されている"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ビットコイン\n",
    "\n",
    "* 決済用に作られた仮想通貨\n",
    "\n",
    "### ブロックの中身\n",
    "\n",
    "* トランザクションのID\n",
    "* 送信元アドレス\n",
    "* 送信先アドレス\n",
    "* 送信先の公開鍵\n",
    "* 送信元の電子署名\n",
    "* 送信する量(10BTCなど)\n",
    "* 一定時間に発生したトランザクションをまとめたもの\n",
    "    * 過去およそ10分間の全世界のビットコイン取引\n",
    "* 一つ前のブロックのハッシュ値\n",
    "* nonce\n",
    "    * ハッシュ関数に代入するとその頭に決められた個数の0が並ぶ数字が出てくるような値\n",
    "    * 正しいnonceの値を最初に見出したノードが、ブロックをネットワークに送信する\n",
    "        * 平均して10分となるように目的の値(2016個のブロックが作られる毎、およそ2週間おきに調整される)がセットされている\n",
    "            * 正しいnonceが見つかるのは確率論なので10分より短いこともあれば長いこともある\n",
    "            * 確率の要素があるので早いコンピューターが必ず勝つわけではない\n",
    "            \n",
    "### ブロックの作られ方\n",
    "\n",
    "* およそ10分毎に一つのブロックが作られる\n",
    "    * 各ノードは送られてきたブロックのハッシュ計算が正しいことと、ブロック内の取引が正しいものであることを確認する\n",
    "    * 確認したらタイムスタンプを押して、直前のブロックのつぎに接続する\n",
    "\n",
    "### 問題点\n",
    "\n",
    "* 取引が確認されるまで10分かかる\n",
    "    * レジや高速道路の料金の決済には向かない\n",
    "        * なんらかの信用制度が必要？\n",
    "* 通貨の維持に莫大な電力が必要\n",
    "    * 承認システムにPoWを採用しているため。常用通貨としては維持コストが高すぎる？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## イーサリアム(Ethereum/ETH)\n",
    "\n",
    "* 2013年、ブロックチェーンの相互合意システムを利用し、世界共通のアプリケーションの基盤を目的として作られたプラットフォーム\n",
    "    * ブロックチェーン上に取引情報だけではなく、契約(スマートコントラクト)を記述する\n",
    "* プロジェクトの発起人\n",
    "    * ヴィタリック・ブテリン\n",
    "* 取引の承認にかかる時間は15秒ほど\n",
    "    * ディフィカルティボムを1年半近く延期するという措置による\n",
    "* ブロックチェーン上で任意のプログラムやアプリケーションを走らせることができる\n",
    "    * 改ざんが不可能\n",
    "    * ネットワーク上で自動実行される\n",
    "    * 利用例\n",
    "        * 売った瞬間に利用できなくなるといった中古デジタルコンテンツ販売\n",
    "        * 配当付き株券や保険証書\n",
    "        * シェアリングビジネスで支払いをして初めて利用可能となる鍵など\n",
    "\n",
    "### スマートコントラクト\n",
    "\n",
    "* プログラムに基いて自動的に実行される契約\n",
    "* 1994年、Nick Szaboにより提唱された概念\n",
    "    * ブロックチェーンとの組み合わせた仕組み\n",
    "        * 処理の流れ\n",
    "            * 当事者間の私的な取引をプログラムとしてブロックチェーン上で記載\n",
    "            * 契約の執行条件が満たされたら自動的に契約を執行する\n",
    "        * 取引に付随する様々な作業を自動で執行できるようになる\n",
    "            * 不正取引が減る\n",
    "            * 世の中の仲介業者がやっていることを自動化できるな\n",
    "    * 以下のような契約の2〜4を自動で行うことができる\n",
    "        1. 契約定義\n",
    "        2. イベント発生\n",
    "        3. 価値の交換、契約執行\n",
    "        4. 決済\n",
    "    * 自動販売機によるイメージ\n",
    "        1. 制約条件を満たす額のお金（買うものの値段）を入れてボタンを押すと、商品が出て来るという契約を定義する\n",
    "        2. 人が訪れてお金を入れてボタンを押す\n",
    "        3. 商品が出て来る\n",
    "        4. お金が自動販売機のものになる\n",
    "* メリット\n",
    "    * トラストレス、仲介手数料が安くなる、手間が省ける\n",
    "        * 相手への信頼、仲介者の存在、相手への問い合わせが不要\n",
    "    * 契約の改ざんが不可能\n",
    "* デメリット\n",
    "    * 契約の変更ができない\n",
    "        * 契約をプログラムで組むのでバグが致命的だとハッカーに攻撃される\n",
    "            * The DAO事件の引き金\n",
    "    * 言語が一般的ではない(プログラミング言語を使う)\n",
    "        * 曖昧な内容や解釈をする免責事項などは定義が難しく書くことができない\n",
    "* 活用事例\n",
    "    * DApps（分散型アプリケーション）\n",
    "        * 今までは中央管理者や仲介者が存在したサービスも、P2Pでの分散型のアプリケーションにする\n",
    "    * DAO（分散型自動化組織）\n",
    "        * 管理者がいなくても自律的に動き続ける組織\n",
    "        * 予測可能性が高い分野はDAOで、低い分野は今まで通りの組織で、といった組織の効率化は可能では？\n",
    "    * IoT連携\n",
    "        * IoTとスマートコントラクトによる決済を組み合わせる\n",
    "            * ガソリンを入れた分だけ車が勝手にお金を払うなど\n",
    "* スマートコントラクトジャパン株式会社\n",
    "    * ミッション\n",
    "        * イーサリアム・ブロックチェーンの社会基盤確立の一端を担う\n",
    "    * 主な業務\n",
    "        * DAppsやイーサリアムのブロックチェーンに関する投資やマーケティング\n",
    "    * 5月22日にEEA（Enterprise Ethereum Alliance）に加入\n",
    "    * EEA(イーサリアムのスマートコントラクトをビジネスに活かしていくことを目指す企業連盟)公式日本事務局に就任\n",
    "\n",
    "### 承認システムの移行\n",
    "\n",
    "* PoWからPoSへ移行中\n",
    "    * PoW通貨の維持に大量の電力が必要で、日常利用には使われにくいため\n",
    "    * 完全移行は2018〜2019年？\n",
    "* 4段階アップデート\n",
    "    * Frontier(フロンティア) (2015年7月)\n",
    "        * テスト版\n",
    "    * Homestead(ホームステッド)(2016年3月)\n",
    "        * 安定性を高めた\n",
    "            * 取引手数料の引き上げ\n",
    "            * ブロックチェーンの分岐を防ぐための採掘難易度（difficulty)の調整\n",
    "    * Metropolis(メトロポリス)\n",
    "        * Byzantium(ビザンチウム)(2017年9月)\n",
    "            * メトロポリス前半のアップデート\n",
    "            * zk-SNARKを導入したことによって送金/取引時のプライバシー保護が可能となり匿名性が向上\n",
    "                * 匿名性の高い通貨として有名なZcashで用いられているゼロ知識証明という暗号技術を導入\n",
    "                    * 「あることが正しいことを証明する際に、相手にそれ以外の情報を全く漏らさない」\n",
    "            * difficultyの調整によって1つのブロックの生成にかかる時間を15秒に短縮\n",
    "                * その代わりとしてマイナー報酬を5ETHから3ETHに変更\n",
    "            * 『マスキング』と呼ばれるセキュリティー対策を導入\n",
    "                * ユーザーが任意の秘密鍵を決めることが可能となった\n",
    "                * マスキングでは秘密鍵と公開鍵の間に決まった関係を持たせずに、秘密鍵から独立して公開鍵を生成する\n",
    "                    * 仮に量子コンピュータが実現したとしても、公開鍵から秘密鍵を割り出すことができない\n",
    "            * デザイン変更\n",
    "            * ウォレットの安定したバージョンのリリース\n",
    "        * Constantinople(コンスタンティノープル)(2018年内に完了予定？)\n",
    "            * メトロポリス後半のアップデート\n",
    "            * PoWからPoSへの移行準備\n",
    "    * Serenity (セレニティ)\n",
    "        * ブロック承認方式の変更\n",
    "            * 「Casper」という独自のProof of Stakeコンセンサスアルゴリズムが採用される予定\n",
    "                * PoWとPoSを組み合わせた承認方式\n",
    "* 移行時の処置\n",
    "    * ディフィカルティボム\n",
    "        * Proof of Workのままではマイナーの採算が合わなくなるように、マイニングの難易度を徐々に上げていく\n",
    "        * 移行準備が遅れている状態でこれが発動してさらに移行が遅れている状態\n",
    "    * The DAO事件の影響\n",
    "        * 通貨の分裂が発生したためアップデート(ハードフォーク)に慎重になっている\n",
    "            * マイナーやユーザーの同意を確認しながら進めるようになった\n",
    "\n",
    "### Casper\n",
    "\n",
    "* イーサリアム独自の認証システム\n",
    "    * 不正なブロックを承認すると罰を受けるSlasherという仕組みを導入する予定(Nothing at Stake問題対応)\n",
    "        * ブロックチェーンの分岐が起こりにくくなるようにする\n",
    "\n",
    "### The DAO事件\n",
    "\n",
    "* The DAOはドイツのスタートアップ「Slock.it」によって始められた投資ファンドのプロジェクト\n",
    "    * プロジェクト内で使用されたのがトークンの「DAO」\n",
    "* スプリットという機能の脆弱性を疲れてハッカーに64億円盗まれた\n",
    "    * スプリット\n",
    "        * 運営方針に反対の場合、自分がプールしていたDAOトークンを別アドレスに分離し、新しいDAOを作ることができる\n",
    "        * 別のファンドを立ち上げるような機能\n",
    "    * スプリットの脆弱性をついた攻撃\n",
    "        * 何度もスプリットを発生させる\n",
    "        * 自分が管理する新しいDAOに大量のETHを移動した\n",
    "* 対応方法\n",
    "    * ハッカーのDAOをロックする\n",
    "        * ハッカーがDAOを引き出せなくなる一方、ETHにも戻ってこなくなる\n",
    "    * ハードフォークする\n",
    "        * 盗まれた事を無かったことにする\n",
    "            * もともとのETHのブロックチェーンには364万ETHが移動した記録が刻まれている\n",
    "            * 残高を修正するコードを挿入し、別の新しいDAOに移動させた新しいチェーンを作る\n",
    "            * それをイーサリアムの正式なチェーンとして採用する\n",
    "                * 大多数のこちらのハードフォーク案を採用することになった\n",
    "        * 一部の人々から反感を買い、元々あったチェーンを使い続ける人が出てきてしまった\n",
    "            * DAOという一部のプロジェクトを救うために不可侵であるはずのイーサリアム本体のブロックチェーンのルール変更は受け入れられない\n",
    "                * 民間企業を救うために公的資金を投入するようなもの\n",
    "            * イーサリアムクラシックという新たな通貨が誕生してしまった\n",
    "* 本来のイーサリアムのハードフォーク\n",
    "    * 元々予定され、新しいブロックチェーンへの移行をスムーズに進ませるためのもの\n",
    "        * 本来は通貨の分裂を生むものでは無い\n",
    "\n",
    "\n",
    "### 注意点\n",
    "\n",
    "* アップデートで大幅にシステムが変わることに伴い価格が乱高下する可能性がある"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## リップル(XRP)\n",
    "\n",
    "* 米リップル社が運営\n",
    "\n",
    "### ミッション\n",
    "\n",
    "* 国際間送金の改善\n",
    "    * 時間がかかっている\n",
    "    * 手数料が高い\n",
    "    \n",
    "### XRP\n",
    "\n",
    "* リップルネットワーク内の通貨\n",
    "* 主たる機能\n",
    "    * 2種の法定通貨の両替の手間を減らすために間入る「ブリッジ通貨」\n",
    "    * リップルネットワークを使った送金を行うときの決済手数料\n",
    "\n",
    "### コンセンサスアルゴリズム\n",
    "\n",
    "* PoC\n",
    "    * トランザクションの承認はリップル社が承認したノードにのみ行われる\n",
    "        * 中央集権的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 参考\n",
    "\n",
    "* [ビットコイン論文](https://bitcoin.org/bitcoin.pdf)\n",
    "* [ビットコインのブロックチェーンの技術的な説明 まとめ](http://block-chain.jp/tech/bitcoin-blockchain)\n",
    "* [「ブロックチェーン」と「プルーフ・オブ・ワーク」――きわめて斬新なビットコインの中核技術](https://diamond.jp/articles/-/50486)\n",
    "* [プルーフオブワーク（PoW）の仕組みとは？プルーフオブステークとの違いも説明します！](https://coinotaku.com/?p=1235)\n",
    "    * 様々な承認システムの種類まとめ\n",
    "* [「ブロックチェーン」の仕組みとは？今さら聞けない基礎知識を解説](https://ferret-plus.com/7706)\n",
    "    * ブロックチェーンの種類解説\n",
    "* [Proof of Stake（PoS）とは？仕組みやデメリット、イーサリアムの移行予定など](https://coinotaku.com/?p=1302)\n",
    "* [イーサリアム（ETH）アップデートの種類と概要](https://bittimes.net/news/11875.html)\n",
    "* [スマートコントラクトとは？ブロックチェーン技術の新たな可能性を東大生が考察！](https://coinotaku.com/?p=2274)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 仮想通貨について\n",
    "\n",
    "* アルトコイン(オルトコイン)\n",
    "    * ビットコイン以外の仮想通貨\n",
    "        * 2009年にビットコインが登場したときに唯一の仮想通貨だったため\n",
    "        * 2011年にライトコインができる。ライトコインが世界初のアルトコイン\n",
    "* 草コイン\n",
    "    * アルトコインのうち、他のコインの単なるコピーだったり技術的新規性にかけるもの\n",
    "    * 今は時価総額や単価が低いコイン、知名度の低いマイナーコインというニュアンスで使われる\n",
    "\n",
    "### ライトコイン(LTC)\n",
    "\n",
    "* 2011年から開発が行われている\n",
    "* 送金手数料や決済スピードがビットコインよりも優れている\n",
    "\n",
    "### モナコイン(MONA)\n",
    "\n",
    "* 2ちゃんねる発祥の純国産アルトコイン\n",
    "* もともとはLTCのフォーク\n",
    "    * 承認時間は９０秒とより短い\n",
    "* 51%攻撃された\n",
    "    * 2018年5月、ロシアの取引所でモナコインに攻撃が加えられた\n",
    "        * ネットワーク全体の50%以上のハッシュパワーを持つハッカーにより確定したはずだった取引が取り消された\n",
    "            * 被害総額は1000万程度と少ないが、チェーン自体に対する攻撃ということでインパクトは高い\n",
    "            \n",
    "### ビットコインキャッシュ(BCH)\n",
    "\n",
    "* ビットコインのハードフォーク\n",
    "    * 2017年８月誕生\n",
    "    * 1ブロックあたり1MB書き込み可能という仕様だが、それがトランザクション量を上回ってしまった\n",
    "        * もともと決済に10分程度かかっていたが、さらに長い時間がかかるようになってしまった\n",
    "        * 解決策\n",
    "            * 取引あたりのデータサイズを小さくするSegwitという技術を採用する\n",
    "                * カウントするデータの対象を変更(電子署名を除外)することで実質的にブロックサイズを2〜4MBに拡張\n",
    "                * こちらがビットコイン\n",
    "            * ブロックサイズ自体を大きくする\n",
    "                * 8〜32MBにする\n",
    "                * こちらがBCH\n",
    "                \n",
    "### テザー(USDT)\n",
    "\n",
    "* Bitfinex傘下の企業が発行\n",
    "* USドル連動型の仮想通貨\n",
    "* 米ドルの銀行口座を持っていない小さな取引所が利用\n",
    "* ビットコインを買い支えるために米ドル以上のUSDTが発行されたのではという疑惑がある"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 単語\n",
    "\n",
    "### フィアット(fiat)\n",
    "\n",
    "* 金や銀などとの交換が保証されていないお金\n",
    "* いわゆる現在の法定通貨\n",
    "* 仮想通貨の世界ではドルや円を総称してフィアットと呼んでいる\n",
    "\n",
    "### ホエール\n",
    "\n",
    "* 大量の仮想通貨を保有する投資家のこと\n",
    "    * ビットコインは1000人ほどが全体の40%を保有している\n",
    "    \n",
    "### トランザクションフィー\n",
    "\n",
    "* 送金手数料\n",
    "* イーサリアムの場合は特定のコントラクトに支払う料金\n",
    "\n",
    "### ハッシュパワー\n",
    "\n",
    "* マイニングを行う上で必要となるコンピューターの処理能力\n",
    "* 「コインのハッシュパワーが上がる」とは、マイニングの難易度が上がること\n",
    "\n",
    "### ソフトフォーク\n",
    "\n",
    "* コンセンサスルールをより厳格化する形で変更する方式\n",
    "    * 後方互換性がある\n",
    "\n",
    "### 取引所と販売所\n",
    "\n",
    "* 取引所\n",
    "    * 個人間から直接、売買(C to C)\n",
    "    * Zaif, bitFlyerなど\n",
    "    * 指値、成行注文できる\n",
    "    * 注文がなかなか成立しないこともある\n",
    "* 販売所\n",
    "    * 仮想通貨交換業者から直接、仮想通貨を売買(B to C)\n",
    "    * 直に直接売買できる\n",
    "    * 確実に買える\n",
    "    * 手数料が高い"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
